precision='double';
for n=2:2:32
    A=rand(n,n);
    
    tic;
    [pp1a pp2a]=F(A);
    Ba=adjF(pp1a,pp2a);
    t1 = toc;

    tic;
    [pp1b pp2b]=optimizedPPFT2D(A,precision);
    [pp1bFlip pp2bFlip]=optimizedPPFT2D(flipud(A),precision);
    Bb=optimizedAdjointPPFT2D(pp1b,pp2b,precision);
    t2=toc;

    reportTestResult(n,(norm(pp1a(:)-pp1bFlip(:))./norm(pp1a(:))),t1/t2,precision); 
    reportTestResult(n,(norm(pp2a(:)-pp2bFlip(:))./norm(pp2a(:))),t1/t2,precision); 
    reportTestResult(n,(norm(Ba(:)-Bb(:))./norm(Ba(:))),t1/t2,precision);    
end